package com.controller;

import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;

import com.gui.login.LoginAll;
import com.tool.DatabaseTool;

public class UserCon {
	public String tableHad = "书籍编号,书名,种类,价格,数量,出版社,入库时间";
	public String tableHad1 = "书籍编号,书名,种类,价格,数量,出版社,借出时间";
	private final int NAME_COLUMN = 1;
	private final int PASS_COLUMN = 2;
	private final int MISTAKE_COLUMN = 3;
	private final int LIST_FISTLIN = 0;
	private final String DEFAULT_PASSWORLD = "********";
 
	/**
	 * 查询按钮方法
	 * 
	 * @param f
	 *            下拉菜单脚标
	 * @param s
	 *            文本框的值
	 * @return 查询结果表
	 */
	public JTable userselect(int f, String s) {
		JTable table = null;
		// 接收参数
		int foot = f;
		String str = s;
		// 输入为空 查询全表
		if (s == null || s.equals("")) {
			SupCon sc = new SupCon();
			table = sc.quaryReaderAll("book");
			return table; 
		} 
		if (foot == 0) {
			// 查询语句返回list集合
			List<String> list = DatabaseTool.doQuery("SELECT * FROM book WHERE b_name LIKE '%" + str + "%'  ");
			// 新建二维数组存放表中数据
			Object obj[][] = new Object[list.size()][];
			table = null; // 用来保存记录的JTable控件
			Object os[] = null; // 用来存放表头的数组
			os = tableHad.split(","); // 获取表头
			if (list != null) { // 如果list为空则不执行操作
				for (int i = 0; i < list.size(); i++) {
					Object[] objs = list.get(i).split(","); // 获取其中的字段
					obj[i] = objs;
					System.out.println(objs);
				}
				table = new JTable(obj, os); // 新建表
				table.getAutoResizeMode();
			}
			return table;
		} else if (foot == 1) {
			// 查询语句返回list集合
			List<String> list = DatabaseTool.doQuery("SELECT * FROM book WHERE b_id LIKE '%" + str + "%'  ");
			// 新建二维数组存放表中数据
			Object obj[][] = new Object[list.size()][];
			table = null; // 用来保存记录的JTable控件
			Object os[] = null; // 用来存放表头的数组
			os = tableHad.split(","); // 获取表头
			if (list != null) { // 如果list为空则不执行操作
				for (int i = 0; i < list.size(); i++) {
					Object[] objs = list.get(i).split(","); // 获取其中的字段
					obj[i] = objs;
				}
				table = new JTable(obj, os); // 新建表
			}
			return table;
		} else if (foot == 2) {
			// 查询语句返回list集合
			List<String> list = DatabaseTool.doQuery("SELECT * FROM book WHERE b_type LIKE '%" + str + "%'  ");
			// 新建二维数组存放表中数据
			Object obj[][] = new Object[list.size()][];
			table = null; // 用来保存记录的JTable控件
			Object os[] = null; // 用来存放表头的数组
			os = tableHad.split(","); // 获取表头
			if (list != null) { // 如果list为空则不执行操作
				for (int i = 0; i < list.size(); i++) {
					Object[] objs = list.get(i).split(","); // 获取其中的字段
					obj[i] = objs;
				}
				table = new JTable(obj, os); // 新建表
			}
			return table;
		} else if (foot == 3) {
			// 查询语句返回list集合
			List<String> list = DatabaseTool.doQuery("SELECT * FROM book WHERE b_company LIKE '%" + str + "%' ");
			// 新建二维数组存放表中数据
			Object obj[][] = new Object[list.size()][];
			table = null; // 用来保存记录的JTable控件
			Object os[] = null; // 用来存放表头的数组
			os = tableHad.split(","); // 获取表头
			if (list != null) { // 如果list为空则不执行操作
				for (int i = 0; i < list.size(); i++) {
					Object[] objs = list.get(i).split(","); // 获取其中的字段
					obj[i] = objs;
				}
				table = new JTable(obj, os); // 新建表
			}
			return table;
		}

		return null;
	}

	// ===============================================================================================
	/**
	 * 借书按钮 方法
	 * 
	 * @param a
	 *            id 编号
	 * @param b
	 *            name 书名
	 * @param c
	 *            type 种类
	 * @param d
	 *            price 价格
	 * @param e
	 *            num 数量
	 * @param f
	 *            company 出版社
	 * @param g
	 *            indate 入库时间
	 * @return
	 */
	public JTable insert_intoBorrow(String a, String b, String c, String d, String e, String f, String g) {
		// 插入一条记录
		DatabaseTool.doInsert("insert into borrowed value" + "('" + a + "','" + b + "','" + c + "','" + d + "','" + e
				+ "','" + f + "','" + g + "')");
		// 更新book中 该书数量减一
		DatabaseTool.doUpdate("UPDATE book set b_num = b_num-1 WHERE b_num>0 and b_id =" + a + ";");
		SupCon sc = new SupCon();
		table = sc.quaryReaderAll("book");
		return table;

	}

	/**
	 * 还书
	 * 
	 * @param a
	 *            图书ID
	 * @return 刷新已借到的borrowed表
	 */
	public JTable insert_intoBook(String a) {
		// 删除borrowed表中的数据
		DatabaseTool.doDelete("delete from borrowed where b_id = " + a + ";");
		// 更新book中 该书数量加一
		DatabaseTool.doUpdate("UPDATE book set b_num = b_num+1 WHERE b_num<1 and   b_id =" + a + ";");
		SupCon sc = new SupCon();
		table = sc.quaryReaderAll("borrowed");
		return table;
	}

	/**
	 * 下拉列表监听器方法 借/还切换
	 * 
	 * @param jb1
	 *            查询按钮
	 * @param jb2
	 *            还书按钮
	 * @param jb3
	 *            借书按钮
	 * @param jcb2
	 *            下拉菜单栏
	 * @param p1_2
	 *            面板
	 * @return 借书时 返回全部book表 还书时返回已借到的borrowed表
	 */
	public JTable change(JButton jb1, JButton jb2, JButton jb3, JComboBox jcb2, JPanel p1_2) {
		SupCon sc = new SupCon();
		// 借书时
		if (jcb2.getSelectedIndex() == 0) {
			p1_2.removeAll();
			jb1.setEnabled(true);
			jb2.setEnabled(false);
			jb3.setEnabled(true);
			table = sc.quaryReaderAll("book");
			return table;
		} else if (jcb2.getSelectedIndex() == 1) {
			// 当下拉列表下标为１时 还书时
			jb1.setEnabled(false);
			jb2.setEnabled(true);
			jb3.setEnabled(false);
			table = sc.quaryReaderAll("borrowed");
			return table;
		} else {
			return null;
		}
	}

	/**
	 * 刷新
	 * 
	 * @param p1_2
	 *            面板刷新
	 */
	public void clear(JPanel p1_2) {
		if (p1_2.isVisible() == true) {
			p1_2.setVisible(false);
		}
	}

	// 将数据库中的数据显示到界面中
	// ===============================================================================================
	JTable table = null;

	/**
	 * 显示方法
	 * 
	 * @param jt1
	 *            用户名文本框
	 * @param jt2
	 *            过失数文本框
	 */
	public void show(JTextField jt1, JTextField jt2, String userName) {
		// 查询语句返回list集合
		List<String> list = DatabaseTool.doQuery("select * from reader where r_name = '" + userName + "'");
		// 新建二维数组存放表中数据
		Object obj[][] = new Object[list.size()][];
		table = null; // 用来保存记录的JTable控件
		Object os[] = null; // 用来存放表头的数组
		os = tableHad.split(","); // 获取表头
		if (list != null) { // 如果list为空则不执行操作
			for (int i = 0; i < list.size(); i++) {
				Object[] objs = list.get(i).split(","); // 获取其中的字段
				obj[i] = objs;
			}
			table = new JTable(obj, os); // 新建表
		}
		// 获取 r_name
		String r_name = (String) table.getValueAt(LIST_FISTLIN, NAME_COLUMN);
		// String r_name =userName;
		// 获取 r_mistake
		String r_mistake = (String) table.getValueAt(LIST_FISTLIN, MISTAKE_COLUMN);
		jt1.setText(r_name);
		jt2.setText(r_mistake);

	}

	public void updatepass(String userName) {
		
		
		// 查询语句返回list集合
		List<String> list = DatabaseTool.doQuery("select * from reader where r_name = '" + userName + "'");
		// 新建二维数组存放表中数据
		Object obj[][] = new Object[list.size()][];
		table = null; // 用来保存记录的JTable控件
		Object os[] = null; // 用来存放表头的数组
		os = tableHad.split(","); // 获取表头
		if (list != null) { // 如果list为空则不执行操作
			for (int i = 0; i < list.size(); i++) {
				Object[] objs = list.get(i).split(","); // 获取其中的字段
				obj[i] = objs;
			}
			table = new JTable(obj, os); // 新建表
		}
		// 获取 r_pass
		String r_pass = (String) table.getValueAt(LIST_FISTLIN, PASS_COLUMN);

int a=JOptionPane.showConfirmDialog(null, "您是否确定要更改密码", "温馨提示之终极密码安全提示", JOptionPane.YES_NO_OPTION,JOptionPane.NO_OPTION); 
if(a==0){
	String inputValue = JOptionPane.showInputDialog(null,"请输入新密码"+"\n"+"你的原密码是：",r_pass); 
	DatabaseTool.doUpdate("update reader set r_pass='"+inputValue +"' where r_name= '"+userName +"'");
	JOptionPane.showMessageDialog(null, "恭喜您密码修改成功", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
}
	}
	/**
	 * 隐藏方法
	 * 
	 * @param jt1
	 *            用户名文本框
	 * @param jt2
	 *            过失数文本框
	 */
	public void hide(JTextField jt1, JTextField jt2) {
		jt1.setText(DEFAULT_PASSWORLD);
		jt2.setText(DEFAULT_PASSWORLD);
	}

	/**
	 * 更新密码
	 * 
	 * @param jp
	 */
	/**
	 * 设置指定列的宽度
	 * 
	 * @param table
	 * @param column
	 * @param width
	 */
	public void settable(JTable table) {
		DefaultTableCellRenderer r = new DefaultTableCellRenderer();
		r.setHorizontalAlignment(JLabel.CENTER);
		table.setDefaultRenderer(Object.class, r);
	}

}
